package com.ruoyi.system.service.fx;

import com.ruoyi.system.domain.dto.FxStoreGoodDto;
import com.ruoyi.system.domain.dto.FxSupplierGoodDto;
import com.ruoyi.system.domain.fx.FxGoodclassify;
import com.ruoyi.system.domain.fx.FxStoreGood;
import com.ruoyi.system.domain.fx.FxSupplierGood;
import com.ruoyi.system.domain.vo.FxStoreGoodVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 店铺商品Service接口
 *
 * @author ruoyi
 * @date 2024-07-23
 */
public interface IFxStoreGoodService {
    /**
     * 查询店铺商品
     *
     * @param id 店铺商品主键
     * @return 店铺商品
     */
    public FxStoreGoodVo selectFxStoreGoodById(Long id,Long supplierGoodId);

    /**
     * 查询店铺商品列表
     *
     * @return 店铺商品集合
     */
    public List<FxStoreGoodVo> selectFxStoreGoodList(FxStoreGood fxStoreGood,String goodName,String storeName);

    /**
     * 查询店铺商品列表
     * @param goodDto
     * @return
     */
    public List<FxStoreGoodVo> selectStoreGoodList(FxStoreGoodDto goodDto);

    public List<FxStoreGoodVo> getStoreGoodList(FxStoreGoodDto goodDto);

    /**
     * 门店详情商品列表
     *
     * @param fxStoreGood
     * @return
     */
    List<FxGoodclassify> selectFxStoreGoodListTree(FxStoreGood fxStoreGood);

    Map<Long, List<FxStoreGoodVo>> selectFxStoreGoodMap(FxStoreGood fxStoreGood);



    /**
     * 小程序 店铺商品
     *
     * @param fxStoreGood
     * @return
     */
    List<FxGoodclassify> selectLeftClassify(FxStoreGood fxStoreGood);

    List<FxStoreGoodVo> selectAppGoodList(FxStoreGoodDto dto);

    /**
     * 新增店铺商品
     *
     * @param fxStoreGood 店铺商品
     * @return 结果
     */
    public int insertFxStoreGood(FxStoreGood fxStoreGood);

    int insertFxStoreGood( FxSupplierGood fxSupplierGood);

    /**
     * 修改店铺商品
     *
     * @param fxStoreGood 店铺商品
     * @return 结果
     */
    public int updateFxStoreGood(FxSupplierGoodDto fxStoreGood);

    /**
     * 店铺商品审核
     * @param fxStoreGood
     * @return
     */
    int updateStoreGoodAudit(FxSupplierGoodDto fxStoreGood);

    /**
     * 店铺商品上下架
     * @param storeGood
     * @return
     */
    int upOrDown(FxStoreGoodDto dto);

    int updateDelFlag(String[] ids);

    /**
     * 补货
     * @return
     */
    int updateFxStoreGoodCounts(FxStoreGood fxStoreGood);
    /**
     * 批量删除店铺商品
     *
     * @param ids 需要删除的店铺商品主键集合
     * @return 结果
     */
    public int deleteFxStoreGoodByIds(Integer[] ids);

    /**
     * 删除店铺商品信息
     *
     * @param id 店铺商品主键
     * @return 结果
     */
    public int deleteFxStoreGoodById(Integer id);

    // 查询店铺有的分类
    List<FxGoodclassify> selectLeftClassifyByStoreId(int  storeId);


    FxStoreGoodVo getStoreGoodById(Long id, Long supplierGoodId, Long storeId);

    public List<FxGoodclassify> getLeftClassifyByStoreId(int  storeId);


    void importDp(MultipartFile file, HttpServletResponse response);

    int editAll(List<FxSupplierGoodDto> fxSupplierGoodDtos);
}
